package com.xiongxiong.yiqing.config.file;

import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.io.File;

/**
 *
 *  * @Description 本地资源配置
 *  * @Author 小乌龟
 *  * @Date 2022/2/22 9:08
 *
 * 作用: 用于配置静态资源映射的一些属性
 * accessPath: 访问静态资源时的路径，如访问ip:port/visual/upload/xxx/xxx,其中visual是项目路径，upload便是accessPath
 * mappingLocationWindows: 指明在windows下运行时accessPath映射到服务器磁盘的绝对路径，比如映射到D:/data
 * mappingLocationNotWindows: 指明在Linux或Mac下运行时accessPath映射到服务器磁盘的绝对路径，比如映射到/usr/data
 * pathPattern: 配置静态资源映射时的参数，表示路径匹配规则，如/upload/**表示以ip:port/visual/upload/开头的url
 * 都会认为是访问静态资源，然后到mappingLocation指定的路径下去寻找资源
 * resourceLocation: 配置静态资源映射时的参数，表示磁盘的绝对路径，如file:/usr/upload/，必须加上file。
 */
@Data
@Component
public class WebAppDataProperties {

    @Value("${webapp.data.access-path}")
    private String accessPath;
    @Value("${webapp.data.path-pattern}")
    private String pathPattern;
    @Value("${webapp.data.mapping-location-windows}")
    private String mappingLocationWindows;
    @Value("${webapp.data.mapping-location-not-windows}")
    private String mapperLocationNotWindows;


    /**
     *获取 文件存放路径(仅仅开头) 不存在就创建 判定服务器类型来摆放路径位置
     * @return String
     * @author zhangjunrong
     * @date 2022/2/22 16:37
     */
    public String getResourceLocation() {
        String os = System.getProperty("os.name");
        if (os.toLowerCase().startsWith("win")) {
            File file = new File(mappingLocationWindows);
            if (!file.exists()) {
                file.mkdirs();
            }
            return "file:" + mappingLocationWindows;
        } else {
            File file = new File(mapperLocationNotWindows);
            if (!file.exists()) {
                file.mkdirs();
            }
            return "file:" + mapperLocationNotWindows;
        }
    }

    /**
      *主要通过这个获取服务器开头路径 D://file/upload/ or /home/yqs/upload/
      * @param
      * @return String 返回服务器的地址
      * @author zhangjunrong
      * @date 2022/2/24 10:30
      */
    public String getMappingLocation() {
        String os = System.getProperty("os.name");
        return (os.toLowerCase().startsWith("win")) ? mappingLocationWindows : mapperLocationNotWindows;
    }



}